今天介紹的是SharedPreferences,這個類別提供一個通用的框架,讓你可以儲存key-value格式的永久性資料到Android裝置上,像是一個簡易版的資料庫。
看到剛剛的語法最後面有一個MODE_PRIVATE,這個有著四種不同的模式,如下:
這邊我設了一個EditText,當按下放入名子的按鈕時就會存入SharedPreference裡,按下拿取名子的按鈕時時,就會從SharedPreference裡拿取之前存入的名子。
public class MainActivity extends AppCompatActivity {
private EditText name;
private Button getName;
private Button setName;
private Shpf shpf;
private Context context=this;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
name=(EditText) findViewById(R.id.editTextTextPersonName);
getName=(Button) findViewById(R.id.button);
setName=(Button) findViewById(R.id.button3);
shpf=new Shpf(this);
}
public void getNameOnClick(View view){
name.setText(shpf.getName());
Toast.makeText(context,"已拿取姓名",Toast.LENGTH_LONG).show();
}
public void setNameOnClick(View view){
shpf.setName(String.valueOf(name.getText()));
name.setText("");
Toast.makeText(context,"已存取姓名",Toast.LENGTH_LONG).show();
}
public class Shpf {
//設定變數
private static String Name="Name";
private SharedPreferences shpf;
private Context context;
public Shpf(Context context){
this.context=context;
//設定SharedPreferences的模式。設定為只有自己(app_name)才可以讀寫。
shpf=this.context.getSharedPreferences(getResources().getString(R.string.app_name)),
Context.MODE_PRIVATE);
}
//放入名子的方法,前面的"Name"為Key。
public void setName(String name){
shpf.edit().putString(Name,name).apply();
}
//拿取名子的方法,前面的"Name"為Key。
public String getName(){
return shpf.getString(Name,"");
}
}